'use strict';
/**
 * 用户表
 */
module.exports = app => {
  const { STRING, UUID, NOW, DATE, UUIDV4 } = app.Sequelize;
  const SUser = app.model.define('SUser', {
    id: {
      type: UUID,
      primaryKey: true,
      allowNull: false,
      defaultValue: UUIDV4,
      comment: '用户id'
    },

    userName: {
      type: STRING(36),
      allowNull: false,
      field: 'user_name',
      comment: '账号'
    },
    password: {
      type: STRING(255),
      allowNull: false,
      field: 'password',
      comment: '密码'
    },
    avatar: {
      type: STRING(255),
      allowNull: true,
      field: 'avatar',
      comment: '头像'
    },
    // wxAppId: {
    //   type: STRING(36),
    //   allowNull: false,
    //   field: 'wx_app_id',
    //   comment: '小程序id'
    // },
    // wxAppSecret: {
    //   type: STRING(36),
    //   allowNull: false,
    //   field: 'wx_app_secret',
    //   comment: '小程序秘钥'
    // },
    // wxAvatar: {
    //   type: STRING(700),
    //   allowNull: true,
    //   field: 'wx_avatar',
    //   comment: '微信头像'
    // },
    // wxName: {
    //   type: STRING(255),
    //   allowNull: true,
    //   field: 'wx_name',
    //   comment: '微信昵称'
    // },
    remark: {
      type: STRING(255),
      allowNull: true,
      field: 'remark',
      comment: '备注'
    },
    createDate: {
      type: DATE,
      defaultValue: NOW,
      field: 'create_date',
      comment: '创建时间'
    },
    updateDate: {
      type: DATE,
      defaultValue: NOW,
      field: 'update_date',
      comment: '更新时间'
    }
  }, {
    // 去除createAt，updateAt
    timestamps: false,
    // 实例对应的表名
    tableName: 's_user',
    // 将createdAt对应到数据库的created_at字段
    createdAt: 'create_date',
    // 将updatedAt对应到数据库的updated_at字段
    updatedAt: 'updated_date'
  });

  SUser.associate = function () {
    app.model.Sys.User.belongsToMany(app.model.Sys.Role, {
      through: app.model.Sys.UserRole,
      foreignKey: 'userId',
      otherKey: 'roleId'
    })
  }

  return SUser;
};




